Skip to main content

Getting Started With Open Source

Open source is a software that is open for all which mean there is no genuine owner of it. Open source is a source code that is made freely available for possible modification and redistribution.

Some popular open source software are Mozilla Firefox, GIMP, VLC Media Player, Linux, Python, etc. Open source dosen't really mean to contributing to big repositories you can also start by contributing to small repositories tp get familiar with open source.

Why should I contribute to open-source?

Open source is the best way to test your understanding in the respective domain By contributing to an open source project, you receive immediate feedback on your development and programming skills. You may get suggestions about the choice of a function name, the way you used conditional logic, or how using a goroutine you didn't know about speeds up the execution of your program. This is all invaluable feedback to receive when you're learning something new.

In addition to building your skills and increasing your confidence, all of your open source contributions are public and demonstrate the skills you have mastered and the projects you've tackled, hence creating a strong portfolio.

How do I get started?

There are prerequisites one should know before starting to contribute to open source:

Build a good Tech background

Its really important to have a good Tech background before contributing to open source or else it might do more harm than good. You need to know about architectural patterns, design patterns on which projects are made and well-known technologies before you begin anything.

Learn a Programming Language

Just like people communicate with each other through languages, you also need to tell your computer what to do using a language that these computers can understand. So choose any programming language as per your choice and goal and have in-depth knowledge in it.

Ruby, Java, Python, C++, C#, Javascript are some languages you can go with. It’s not important to learn 3-4 languages simultaneously as a beginner. Start with one language and get well versed in it.

After becoming proficient with a language you can start learning tech stacks in that language to get an overall idea about it.

Tech Stacks

A tech stack is the combination of technologies a company uses to build and run an application or project. Sometimes called a β€œsolutions stack”, a tech stack typically consists of programming languages, frameworks, a database, front-end tools, back-end tools, and applications connected via APIs.

Some popular tech stacks are mentioned below:

MEAN

MEAN Stack is a collection of user-friendly full-stack JavaScript frameworks including MongoDB, Express.js, Angular.js, and Node.js that developers use to build dynamic applications. It is open-source. It is fast-paced and organised. The sole programming language that the stack uses in JavaScript. This means every tier of the application operates on a single language. It is a versatile stack that can be used to build both mobile applications as well as web apps.

MERN

MERN Stack is a Javascript Stack that is used for easier and faster deployment of full-stack web applications. MERN Stack comprises of 4 technologies namely: MongoDB, Express, React and Node.js. It is designed to make the development process smoother and easier.

Each of these 4 powerful technologies provides an end-to-end framework for the developers to work in and each of these technologies play a big part in the development of web applications.

LAMP

The widely popular LAMP stack is a set of open source software used for web application development.

For a web application to work smoothly, it has to include an operating system, a web server, a database, and a programming language. The name LAMP is an acronym of the following programs:

Linux Operating System Apache HTTP Server MySQL database management system PHP programming language.

Version Control Systems

Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control systems are software tools that help software teams manage changes to source code over time. They also allow us to go through older versions and revert to an old version if required, you can find more information about VCS here.

Just a few version controls system are listed below.

Git

It is a free and open-source version control system used to handle small to very large projects efficiently. Git is used to tracking changes in the source code, enabling multiple developers to work together on non-linear development.

Github

GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.

Open-Source Programs/Contests

Here are various programs that are available for university students and even for working professionals to get involved in open source.

Google Summer of Code (GSoC)

Google Summer of Code is a global program focused on bringing more student developers into open source software development.

Hacktoberfest

Hacktoberfest encourages participation in giving back to the open source community by completing pull requests, participating in events, and donating to open source projects.

MLH Fellowship

MLH Fellowship recently launched a program known as MLH fellowship which is a 12-week remote program where students collaborate on Open Source projects that align their personal interests with the general requirements of the industry and students can participate from their homes. It has mainly three tracks – Explorer, Open Source, and Externship. Here you will gain those skills that you require to be a successful engineer like writing good documentation, open-source best practices, communication, etc. Also, make sure you meet the eligibility criteria before applying for the program.

GirlScript Summer of Code

GirlScript Summer of Code is a 3 month long Open Source program during summers conducted by GirlScript Foundation, started in 2018, to help beginners get started with Open Source Development while encouraging diversity. This program is open for all not just for girls.

Linux Kernel Mentorship Program

Linux Kernel Mentorship Program offers a structured remote learning opportunity to aspiring Linux Kernel developers. Experienced Linux Kernel developers and maintainers mentor volunteer mentees and help them become contributors to the Linux Kernel.